package com.resume.aipeople.service.ai.model;

import ai.z.openapi.service.model.ChatCompletionCreateParams;
import ai.z.openapi.service.model.ChatMessage;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * LLM模型策略接口
 * 定义不同LLM模型的调用策略
 */
public interface LLMModelStrategy {
    
    /**
     * 获取模型名称
     * @return 模型名称
     */
    String getModelName();
    
    /**
     * 获取模型显示名称
     * @return 模型显示名称
     */
    String getDisplayName();
    
    /**
     * 获取模型描述
     * @return 模型描述
     */
    String getDescription();
    
    /**
     * 构建聊天完成请求参数
     * @param messages 消息列表
     * @param temperature 温度参数
     * @param maxTokens 最大token数
     * @return 聊天完成请求参数
     */
    ChatCompletionCreateParams buildRequest(List<ChatMessage> messages, float temperature, int maxTokens);
    
    /**
     * 处理模型响应
     * @param response 原始响应
     * @return 处理后的响应内容
     */
    Mono<String> processResponse(Object response);
    
    /**
     * 检查模型是否可用
     * @return 是否可用
     */
    default boolean isAvailable() {
        return true;
    }
}
